The present invention relates to computer graphics and more specifically to a method and apparatus for rendering a bicubic surface on a computer system.
Object models are often stored in computer systems in the form of surfaces. The process of displaying the object (corresponding to the object model) generally requires rendering, which usually refers to mapping the object model onto a two dimensional surface. At least when the surfaces are curved, the surfaces are generally subdivided or decomposed into triangles in the process of rendering the images.
A cubic parametric curve is defined by the positions and tangents at the curve""s end points. A Bezier curve, for example, is defined by a geometry matrix of four points (P1-P4) that are defined by the intersections of the tangent vectors at the end points of the curve. Changing the locations of the points changes the shape of the curve.
Cubic curves may be generalized to bicubic surfaces by defining cubic equations of two parameters, s and t. In other words, bicubic surfaces are defined as parametric surfaces where the (x,y,z) coordinates in a space called xe2x80x9cworld coordinatesxe2x80x9d (WC) of each point of the surface are functions of s and t. Varying both parameters from 0 to 1 defines all points on a surface patch. If one parameter is assigned a constant value in the other parameters vary from 0 to 1, the result is a cubic curve, defined by a geometry matrix P comprising 16 control points (FIG. 4).
While the parameters s and t describe a closed unidimensional interval (typically the interval [0,1]) the points (x,y,z) describe the surface:
x=f(s,t), y=g(s,t), z=h(s,t) s⊃[0,1], t⊃[0,1], where D represents an interval between the two coordinates in the parenthesis.
The space determined by s and t, the bidimensional interval [0,1]x[0,1] is called xe2x80x9cparameter coordinatesxe2x80x9d (PC). Textures described in a space called xe2x80x9ctexture coordinatesxe2x80x9d (TC) that can be two or even three dimensional are described by sets of points of two ((u,v))or three coordinates ((u,v,q)). The process of attaching a texture to a surface is called xe2x80x9ctexturexe2x80x94object associationxe2x80x9d and consists of associating u, v and q with the parameters s and t via some function:
u=a(s,t) v=b(s,t) (and q=c(s,t))
FIGS. 1A and 1B are diagrams illustrating a process for rendering bicubic surfaces. As shown in FIG. 1A, the principle used for rendering such a curved surface 10 is to subdivide it into smaller four sided surfaces or tiles 12 by subdividing the intervals that define the parameters s and t. The subdivision continues until the surfaces resulting from subdivision have a curvature, measured in WC space, that is below a predetermined threshold. The subdivision of the intervals defining s and t produces a set of numbers {si}i=1,n and {tj}j=1,m that determine a subdivision of the PC. This subdivision induces a subdivision of the TC, for each pair (si,tj) we obtain a pair (ui,j,vi,j) (or a triplet (ui,j,vi,j,qi,j) ). Here ui,j=a(si,tj), vi,j=b(si,tj), qi,j=c(si,tj). For each pair (si,tj) we also obtain a point (called xe2x80x9cvertexxe2x80x9d) in WC, Vi,j (f(si,tj),g(si,tj),h(si,tj)).
This process is executed off-line because the subdivision of the surfaces and the measurement of the resulting curvature are very time consuming. As shown in FIG. 1B when all resulting four sided surfaces (tiles) 12 is below a certain curvature threshold, each such resultant four-sided surface 12 is then divided into two triangles 14 (because they are easily rendered by dedicated hardware) and each triangle surface gets the normal to its surface calculated and each triangle vertex also gets its normal calculated. The normals are used later on for lighting calculations.
As shown in FIG. 2, bicubic surfaces 10A and 10B that share boundaries must share the same subdivision along the common boundary (i.e., the tile 12 boundaries match). This is due to the fact that the triangles resulting from subdivision must share the same vertices along the common surface boundary, otherwise cracks will appear between them.
The conventional process for subdividing a set of bicubic surfaces in pseudocode is as follows:
The steps 1 through 4 are executed on general purpose computers and may take up to several hours to execute. The steps of rendering the set of bicubic surfaces that have been decomposed into triangles are as follows:
The conventional process for rendering bicubic surfaces has several disadvantages. For example, the process is slow because the subdivision is so computationally intensive, and is therefore often executed off-line. In addition, as the subdivision of the tiles into triangles is done off-line, the partition is fixed, it may not account for the fact that more triangles are needed when the surface is closer to the viewer versus fewer triangles being needed when the surface is farther away. The process of adaptively subdividing a surface as a function of distance is called xe2x80x9cautomatic level of detailxe2x80x9d.
Furthermore, each vertex or triangle plane normal needs to be transformed when the surface is transformed in response to a change of view of the surface, a computationally intensive process that may need dedicated hardware. Also, there is no accounting for the fact that the surfaces are actually rendered in a space called xe2x80x9cscreen coordinatesxe2x80x9d (SC) after a process called xe2x80x9cprojectionxe2x80x9d which distorts such surfaces to the point where we need to take into consideration the curvature in SC, not in WC.
Because the steps required for surface subdivision are so slow and limited, a method is needed for rendering a curved surface that minimizes the number of required computations, such that the images can potentially be rendered in real-time (as opposed to off-line). The present invention addresses such a need.
The present invention provides a method and system for rendering bicubic surfaces of an object on a computer system. Each bicubic surface is defined by sixteen control points and bounded by four boundary curves, and each boundary curve is formed by boundary box of line segments formed between four of the control points. The method and system of include transforming only the control points of the surface given a view of the object, rather than points across the entire bicubic surface. Next, a pair of orthogonal boundary curves to process is selected. After the boundary curves have been selected, each of the curves is iteratively subdivided, wherein two new curves are generated with each subdivision. The subdivision of each of the curves is terminated when the curves satisfy a flatness threshold expressed in screen coordinates, whereby the number of computations required to render the object is minimized.
According to the system and method disclosed herein, the number of computations required for rendering of an object model are minimized by requiring that only two orthogonal curves of the surface be subdivided. As the number of computations are decreased, the entire rendering process can potentially be performed in real time. According to another aspect of the present invention, the computations for subdivision are performed by expressing the criteria of terminating the subdivision in the screen coordinates (SC). As the curvature is estimated based on how flat it appears to be in SC (pixels), rather than how curved it is in WC, the number of computations required may further be minimized. As a result, the possibility of rendering images in real time is further enhanced. In addition, allowing the curvature to be measured in SC units also allows for accommodating the distance to the viewer, thus giving the process an xe2x80x9cautomatic level of detailxe2x80x9d capability.